#ifndef PAIR_OF_INTS_HPP
#define PAIR_OF_INTS_HPP

struct PairOfInts {
    int first;
    int second;

    bool operator==(const PairOfInts & other) const {
        return (first == other.first && second == other.second);
    }

    bool operator <(const PairOfInts & other) const {
        return (first < other.first || ( first == other.first && second < other.second));
    }
};

/*
namespace std {

  template <>
  struct hash<PairOfInts>
  {
    std::size_t operator()(const PairOfInts & k) const
    {
      using std::size_t;
      using std::hash;

      // Compute individual hash values for first,
      // second and third and combine them using XOR
      // and bit shifting:

      return ((hash<int>()(k.first)
               ^ (hash<int>()(k.second) << 1)) >> 1);
    }
  };

}
*/

#endif // PAIR_OF_INTS_HPP
